package cloudgamemysql

import (
	"gorm.io/gorm"
	"time"
)

// CGUser 用户表
type CGUser struct {
	ID                              int64          `json:"id" gorm:"column:id;type:bigint;primaryKey;autoIncrement;comment:ID"`
	RealName                        string         `json:"real_name" gorm:"column:real_name;type:varchar(256);not null;default:'';comment:用户真实姓名（实名认证）"`
	IdentityCardNum                 string         `json:"identity_card_num" gorm:"column:identity_card_num;type:varchar(128);not null;default:'';comment:用户身份证号"`
	Phone                           string         `json:"phone" gorm:"column:phone;type:varchar(20);unique;not null;default:'';comment:用户手机号"`
	PhonePrefix                     string         `json:"phone_prefix" gorm:"column:phone_prefix;type:varchar(20);not null;default:'';comment:用户手机号前缀 比如 +86"`
	Email                           string         `json:"email" gorm:"column:email;type:varchar(256);not null;default:'';comment:用户邮箱号"`
	NickName                        string         `json:"nick_name" gorm:"column:nick_name;type:varchar(32);not null;default:'';comment:用户昵称"`
	Avatar                          string         `json:"avatar" gorm:"column:avatar;type:varchar(64);not null;default:'';comment:用户头像"`
	Sex                             int            `json:"sex" gorm:"column:sex;type:tinyint;not null;default:0;comment:用户的性别；0未知 1男 2女"`
	SelfIntroduction                string         `json:"self_introduction" gorm:"column:self_introduction;type:varchar(256);not null;default:'';comment:用户自我介绍"`
	LastLoginIP                     string         `json:"last_login_ip" gorm:"column:last_login_ip;type:varchar(20);not null;default:'';comment:用户最后一次登录IP"`
	LastLoginTime                   time.Time      `json:"last_login_time" gorm:"column:last_login_time;type:datetime;default:null;comment:用户最后一次登录时间"`
	ConsecutiveActiveDays           int64          `json:"consecutive_active_days" gorm:"column:consecutive_active_days;type:bigint;not null;default:0;comment:用户连续登录天数"`
	UpdateConsecutiveActiveDaysTime time.Time      `json:"update_consecutive_active_days_time" gorm:"column:update_consecutive_active_days_time;type:datetime;default:null;comment:更新用户连续登录天数的时间戳"`
	Status                          int            `json:"status" gorm:"column:status;type:tinyint;default:0;not null;comment:0为正常 1为封禁"`
	Password                        string         `json:"password" gorm:"column:password;type:varchar(500);not null;default:'';comment:密码"`
	IsReset                         int            `json:"is_reset" gorm:"column:is_reset;type:tinyint;not null;default:0;comment:是否重置密码；0没有重置 1已经重置"`
	IsInitRealNameAuth              int            `json:"is_init_real_name_auth" gorm:"column:is_init_real_name_auth;type:tinyint;not null;default:0;comment:是否完成实名认证；0没有完成 1已经完成"`
	IsCanceled                      int            `json:"is_canceled" gorm:"column:is_canceled;type:tinyint;not null;default:0;comment:是否注销；0没有注销 1已经注销"`
	PromotionCode                   string         `json:"promotion_code" gorm:"column:promotion_code;type:varchar(200);not null;default:'';comment:邀请码"`
	IsActivated                     int            `json:"is_activated" gorm:"column:is_activated;type:tinyint;not null;default:0;comment:是否激活；0没有激活 1已经激活"`
	ActivationTime                  time.Time      `json:"activation_time" gorm:"column:activation_time;type:datetime;default:null;comment:激活时间"`
	FirstPlayGameTime               time.Time      `json:"first_play_game_time" gorm:"column:first_play_game_time;type:datetime;default:null;comment:第一次开始游戏时间"`
	FirstUserRechargeTime           time.Time      `json:"first_user_recharge_time" gorm:"column:first_user_recharge_time;type:datetime;default:null;comment:第一次充值时间"`
	FirstUserPurchaseTime           time.Time      `json:"first_user_purchase_time" gorm:"column:first_user_purchase_time;type:datetime;default:null;comment:第一次消费时间"`
	CreatedAt                       time.Time      `json:"created_at" gorm:"column:created_at;type:datetime;comment:该条记录创建时间"`
	UpdatedAt                       time.Time      `json:"updated_at" gorm:"column:updated_at;type:datetime;comment:该条记录修改时间"`
	DeletedAt                       gorm.DeletedAt `json:"-" gorm:"index;type:datetime;comment:该条记录删除时间"`
}

func (CGUser) TableName() string {
	return "cg_user"
}
